W tym projekcie zajęliśmy się klasteryzacją zbioru tekstów religijnych “AsianReligionsData”. Zbiór zawiera zarówno pełne teksty pisanych przekazów religijnych, jak i ramkę danych “bag of words”, w której obserwacje odpowiadają poszczególnym tekstom, a wartości w kolumnach odpowiadających słowom - liczbę wystąpień tego słowa w tekście. Dodatkowo obserwacje mają przypisane etykiety informujące do jakiej księgi należą teksty. W naszej pracy korzystaliśy jedynie z tej ramki danych.
Poniżej przedstawiamy wszystkie 8 etykiet (ksiąg) występujące w zbiorze i liczbę obserwacji do nich przypisanych:
Ostatnie 3 księgi oraz BookOfEccleasiasticus to księgi Biblii Starego Testamentu. Pierwsze 3 księgi oraz Buddhism dotyczą religii i filozofii wschodnich. Są związane z buddyzmem, taoizmem (TaoTeChing), hinduizmem (Upanishad, YogaSutra).
W zbiorze nie ma braków danych. Składa się z 590 obserwacji, z 8267 zmiennych (unikalnych słów).
Zbiór nadaje się zarówno do zadania klasteryzacji, jak i klasyfikacji. My jednak skupialismy się na uczeniu nienadzorowanym. Staramy się znaleźć najlepsze modele klasteryzujące zbiór pod względem wewnętrznych metryk klasteryzacyjnych, nie korzystając z dołączonych do zbioru etykiet.
Ponadto zastanawiamy się, czy da się znaleźć różnice pomiędzy tekstami religijnymi i wyróżnić naturalnie w nich grupy. Dopiero potem takie grupy będziemy przyrównywać do sztucznych grup wyznaczonych przez etykiety. Mamy 2 hipotezy co do tego, jakie klastry będzie się dało wyróżnić w zbiorze:
Będzie widoczna wyraźna różnica pomiędzy tekstami biblijnymi, a tekstami wschodnimi. Wewnątrz grup teksty trudno będzie rozróżnić.
Księgi biblijne będą tworzyć wspólny klaster, a każda z pozostałych ksiąg swój własny. W sumie 5 grup.
Analizowany zbiór danych zawierał aż 8267 kolumn. W celu przeprowadzenia klasteryzacji konieczna była redukcja wymiarów. Podeszliśmy do tego problemu na dwa sposoby:
Pierwszym pomysłem było zliczenie częstości występowania poszczególnych emocji w tekstach. Korzystając z ramki danych przyporządkowywującej dużemu zbiorowi słów emocje, dla każdego dokumentu zliczyliśmy liczbę wystąpień słów wyrażających następujące emocje: surprise, sad, neutral, happy, anger, fear, disgust.
Reprezentacja 3D 3 przykładowo wybranych kolumn zbioru happy, anger oraz fear.
Drugim pomysłem, było zliczenie wystąpień poszczególnych części mowy w dokumencie. Także korzystając z pobranych ramek danych zliczyliśmy dla obserwacji liczbę wystąpień następujących grup: verb, adjective, adverb, noun.
Reprezentacja 3D 3 pierwszych kolumn zbioru noun, verb i adjective.
Do ostatecznego modelowania zdecydowaliśmy się wykorzystać połączenie tych dwóch zbiorów, nazywane przez nas odtąd emotions_speech.
Po zwizualizowaniu zbioru przekształconego do 2 wymiarów za pomocą t-SNE widzimy wyraźną odrębność ksiąg biblijnych. Nie widać jednak różnic między księgami z tej grupy, ani między pozostałymi księgami.
Inną opcją redukcji wymiarów jest usunięcie cześci kolumn zawierających informacje, które miałyby być nieistotne z punktu widzenia modelu. Postanowiliśmy pozbyć się 3 grup kolumn:
Słowa z małą częstotliwością wystepowania. Jest to nietypowy sposób na ograniczenie danych, zdecydowalismy się na niego, ponieważ intuicyjnie trudno zgrupować na podstawie wydarzenia, które występuje tylko raz, może to wprowadzać szum do danych. W ten sposób pozbyliśmy się 3872, czyli 47% kolumn.
Kolumny o małej wariancji. Jeśli dane mają małą wariancję, to niosą mało informacji. Próg wariancji jaki wybralismy to 0.5. W ten sposób pozbyliśmy się 4315 słów - 98% kolumn pozostałych po pierwszym kroku.
Kolumny skorelowane ze sobą. Ograniczanie przez korelację wychodzi z założenia, że skorelowane cechy niosą ze sobą tę samą informację. Ponadto skorelowane cechy mogą mieć negatywny wpływ na modelowanie. Jeśli 2 kolumny są skorelowane, to usuwana jest losowa jedna z tych dwóch. W ten sposób pozbyliśmy się zaledwie 5 spośród pozostałych 79 kolumn.
Stosując te wszystkie kroki udało nam się ograniczyć zbiór do 79 kolumn.
Modele klasteryzacji działają wykorzystując odległości w przestrzeni badanego zbioru. Przy klasteryzacji dokumentów najczęściej używaną metryką jest odległość euklidesowa. Takie odległości pomiędzy dokumentami są bardzo nieintuicyjne i nie wiadomo, jak powinne być one liczone. Nie wiadomo jak bardzo istotna powinna być liczba wystąpień danego słowa, a jak bardzo sam fakt jego występowania w zbiorze.
Postanowiliśmy zatem dokonać przekształceń “oczyszczonego” zbioru, otrzymując 3 jego wersje:
books_scaled - nie przeszkształcony zbiór, jedynie przeskalowany.
books_log - zbiór zlogarytmowany - liczba wystąpień danego słowa zastapiona logarytmem z niej.
books_1 - zachowanie jedynie binarnej informacji o tym, czy dane słowo wystepuje w dokumencie.
Porównaliśmy te 3 zbiory na podstawie modeli k-means zbudowanych z ich użyciem, kierując się kryteriami connectivity, Silhouette Width i Dunn Index.
Wyniki modeli k-means dla 3 przekształceń zbioru pod wzgledem wszystkich 3 metryk. Na czarno zaznaczone są najlepsze wyniki.
Pod względem 2 pierwszych z nich najlepsze wyniki udało się uzyskać dla nie przekształconego zbioru books_scaled i ten własnie zbiór zdecydowaliśmy się wykorzystywać dalej.
Po zwizualizowaniu tego zbioru przekształconego do 2 wymiarów za pomocą t-SNE także możemy zobaczyć odrębność ksiąg biblijnych. Jednak i tu nie widać innych zależności.
W celu wyboru najlepszego modelu porównaliśmy 6 algorytmów klasteryzacji:
k-means - algorytm k-średnich.
pam - Partitioning Around Medoids - realizacja algorytmu k-medoidów.
gmm - Gausian Mixture Models.
hclust - Agglomerative hierarchical clustering, metoda complete.
genie
spectral - Spectral Clustering implementowany przez jednego z nas
Z pomocą każdego z algorytmów zbudowaliśmy modele na 2 zbiorach (books_scaled i emotions_speech) otrzymując 12 modeli.
Dla każdego modelu wybraliśmy optymalną dla niego liczbę klastrów. Użyliśmy do tego metryki Silhouette, dla niektórych modeli biorąc też pod uwagę Within Sum of Squares.
Okazało się, że dla większości modeli optymalną liczbą klastrów okazało się 2, jedynie dla kilku było to 3 lub 4.
Okazało się także, że dający najlepsze wyniki pod względem metryk model hclust, działał w praktyce bezużytecznie, przyporządkowywując wszystkie obserwacje poza jedną do jednego klastra.
Wyniki pozostałych modeli we wszystkich metrykach prezentują poniższe wykresy:
Wyniki modeli po względem metryki Connectivity. Im niższa wartość metryki tym lepszy model.
Najlepszym modelem pod względem tej metryki okazał się zbudowany przy użyciu algorytmu genie na zbiorze emotions_speech.
Wyniki modeli po względem metryki Dunn Index. Im wyższa wartość metryki tym lepszy model.
Tutaj najlepszym modelem okazuje się pam-books_scaled - cechuje się największą wartością Dunn index.
Wyniki modeli po względem metryki Silhouette. Im wyższa wartość metryki tym lepszy model.
Tutaj dwa modele gmm-emotions_speech i pam-emotions_speech otrzymały bardzo podobny, najwyższy wynik.
Poniżej przedstawiamy wizualizację wyników 4 wskazanych powyżej najlepszych modeli na t-SNE zbiorów:
Wizualizacja najlepszych modeli pokazywała dobry podział na księgi Bibilijne i księgi wschodnie.
Praca z tym zbiorem była wyjątkowa. Rzadko pracuje się ze zbiorem, który posiada więcej kolumn niż wierszy. W tym przypadku ważna była inżynieria cech, której zadaniem było zredukowanie liczby kolumn. Zastosowaliśmy kilka sposobów redukcji danych z dobrym rezultatem. Przy dobieraniu modelu także było dużo pracy. Szczególnie ważnym było sprawdzenie wszystkich kombinacji modeli i zbiorów, a także policzenie dla każdego osobnej liczby klastrów. W naszym projekcie wybieraliśmy najlepszy model dla danej metryki, natomiast jesteśmy ciekawi jak wybierać modele na podstawie wielu metryk. Zbadalibyśmy także dlaczego hclust tworzy zbiór jednoelementowy.
Wyniki pokazują, że księgi biblijne i księgi religii wschodnich są od siebie bardzo różne, natomiast podobne względem siebie samych. Świadczy o tym proponowana przez większość modeli podział na 2 klastry oraz to, że modele łączą księgi (znając tylko słowa w nich zawarte) według właśnie tego podziału. Podział na odpowiednie księgi (czyli 8 różnych ksiąg) wydaje się mniej oczywisty niż podział na 2 klastry, czyli księgi biblijne i księgi religii wschodnich.
Ostatecznie, najlepsza liczba klastrów według nas to 2, a modele klasteryzacji, które najlepiej poradziły sobie z zagadnieniem klasteryzacji naszego zbioru to:
genie-emotions_speech
pam-books_scaled
gmm-emotions_speech
pam-emotions_speech
Jak widzimy wśród najlepszych modeli większość powstała z wykorzystaniem zbioru emotions_speech, co wskazuje, że warto było w ten sposób przekształcić nasze dane.
Praca nad tym projektem była dla nas dużą przyjemnością i nauczyła nas wiele technik z zakresu uczenia maszynowego.
Potwierdzam samodzielność powyższej pracy oraz niekorzystanie przeze mnie z niedozwolonych źródeł.